﻿namespace TowerCraneMonitorClient.NetClient.ReserveInfo
{
    /// <summary>
    /// 保护区信息
    /// </summary>
    public class Entity : NetClient.Entity
    {
        /// <summary>
        /// 保护区类型
        /// </summary>
        public ZoneType Type { get; set; }

        /// <summary>
        /// 保护区名称。
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 保护区的id号。范围：0-65536
        /// </summary>
        public int ZoneId { get; set; }

        /// <summary>
        /// 建筑设施类型。
        /// </summary>
        public BuildingType BuildingType { get; set; }

        /// <summary>
        /// 保护区平面左上角相对于塔机中心的X坐标
        /// </summary>
        public float X { get; set; }

        /// <summary>
        /// 保护区平面左上角相对于塔机中心的Y坐标
        /// </summary>
        public float Y { get; set; }

        /// <summary>
        /// 保护区平面宽度
        /// </summary>
        public float Width { get; set; }

        /// <summary>
        /// 保护区平面高度
        /// </summary>
        public float Height { get; set; }

        /// <summary>
        /// 基于该对象生成 ReserveInfo.Req 报文
        /// </summary>
        /// <param name="errorMessage">失败时返回错误信息，成功时返回 null</param>
        /// <returns>成功时返回 ReserveInfo.Req 对象，失败时返回 null</returns>
        public new Req ToReq() => new Req(this);
    }
}
